今天繼續學習.接續昨天的程式碼:
for epoch in range(EPOCH):
for step, (x, y) in enumerate(train_loader):
b_x = Variable(x, requires_grad=False)
b_y = Variable(y, requires_grad=False)
#決定跑幾個epoch,enumerate把load進來的data列出來成(x,y)
if if_use_gpu:
b_x = b_x.cuda()
b_y = b_y.cuda()
#使用cuda加速
output = cnn(b_x) #把data丟進網路中
loss = loss_function(output, b_y)
optimizer.zero_grad() #計算loss,初始梯度
loss.backward() #反向傳播
optimizer.step()
if step % 100 == 0:
print('Epoch:', epoch, '|step:', step, '|train loss:%.4f'%loss.data)
#每100steps輸出一次train loss
以上就是Mnist training 的code
藉由了解其中每一步可以初步掌握搭建神經網路的基礎!